//********************************************************************************************************************************
//*程序作者：杨刘佳
//*完成日期：2024年3月22日
//*章节：第三章
//*题号：第2题
//*题目：编写一个程序实现管理航班信息，实现增加、编辑、删除航班的功能。
//********************************************************************************************************************************

#include <iostream>
#include "FLIGHTINFO.h"
#include "FLIGHTMANAGER.h"
#include <vector>
#include <string>
#include <ctype.h>
using namespace std;

int main()
{
	void displayMenu();
	char getChar(char choose);
	
	char choice;
	char Choice;//为用户提供选项
	
	string fnumber; //航班号
	string fStartCity;//起飞地点
	string fEndCity; //降落地点
	string fStartDate;//日期
	string fStartTime;//起飞时间
	string fEndTime; //降落时间
	int fFirstTicket; //头等舱剩余票数
	int fFirstPrice;//头等舱价格
	int fSecondTicket;//经济舱剩余票数
	int fSecondPrice;//经济舱价格
	
	FlightManager manager1, manage2, manager3;//分别实现增加，编辑，删除航班的功能
	Flightinfo addFlight(fnumber, fStartDate);//增加新的航班信息的函数
	Flightinfo editFlight(fnumber, fStartDate);//编辑航班信息的函数
	
	do
	{
		displayMenu();
		cin >> Choice;
		choice = getChar(Choice);
		switch(choice)
		{
			case 'A': cout << "请先依次输入航班号、起飞日期、起飞地点、降落地点、起飞时间、降落时间、头等舱剩余票数、头等舱价格、经济舱剩余票数、经济舱价格：" << endl;
					  cin >> fnumber >> fStartDate >> fStartCity >> fEndCity >> fStartTime >> fEndTime >> fFirstTicket >> fFirstPrice >> fSecondTicket >> fSecondPrice;				  
					  addFlight.setFlightDetails(fStartCity, fEndCity, fStartTime, fEndTime, fFirstTicket, fFirstPrice, fSecondTicket, fSecondPrice);
    				  manager1.addFlight(addFlight);
    				  cout << "信息输入完成后，请记录航班信息序号以便以后操作（从0开始记录，依次加一）" << endl;
    				  break;
    				  
    		case 'B': int Index;
    				  cout << "请通过查表找到需要修改的航班序号，并输入该序号：" << endl;
    				  cin >> Index;
    				  cout << "请依次输入修改后的航班号、起飞日期、起飞地点、降落地点、起飞时间、降落时间、头等舱剩余票数、头等舱价格、经济舱剩余票数、经济舱价格：" << endl;
    				  cin >> fnumber >> fStartDate >> fStartCity >> fEndCity >> fStartTime >> fEndTime >> fFirstTicket >> fFirstPrice >> fSecondTicket >> fSecondPrice;
    				  editFlight.setFlightDetails(fStartCity, fEndCity, fStartTime, fEndTime, fFirstTicket, fFirstPrice, fSecondTicket, fSecondPrice); 
    				  manage2.editFlight(Index, editFlight);
    				  break;
    				  
    		case 'C': int deletIndex;
					  cout << "请通过查表找到需要删除的航班序号，并输入该序号：" << endl;	
					  cin >> deletIndex;
					  manager3.	deletFlight(deletIndex);
					  break;			 		  
		}
	}while(choice != 'D');
	
	return 0;
}

void displayMenu()
{
	cout << "请选择您要做的操作, 输入D结束操作：" << endl;
	cout << "A: 添加新的航班信息" << endl;
	cout << "B: 对航班信息进行修改" << endl;
	cout << "C: 删除航班" << endl;
}

char getChar(char choose)
{
	char Choose;
	Choose = toupper(choose);
	while(Choose != 'A'&& Choose != 'B' && Choose != 'C' && Choose != 'D')
	{
		cout << "请输入A、B或C选项中的一个" << endl;
		cin >> choose;
		Choose = toupper(choose);
	}
	
	return Choose;
}